﻿/*
 * 如何才能写出高质量的注释
 *
 * CAAD Code as Document
 */

new Calculator().Add(1, 2);
new UserService().Create("admin", "123456");


/// <summary>
/// 计算器
/// </summary>
public class Calculator
{
    /// <summary>
    /// 加法
    /// </summary>
    /// <param name="a">第一个数字</param>
    /// <param name="b">第二个数字</param>
    /// <returns>两个数字相加的结果</returns>
    public int Add(int a, int b)
    {
        return a + b;
    }
}


/// <summary>
/// 用户信息
/// </summary>
public class User
{                                                   
    public int Id { get; set; }

    public string Name { get; set; }

    public string Password { get; set; }
}



public class UserService
{
    /// <summary>
    /// 使用用户名密码创建用户
    /// <para>
    /// 若用户名重复则会抛出异常
    /// </para>
    /// <para>
    /// 密码是明文的,不需要你自己加密
    /// </para>
    /// </summary>
    /// <param name="userName">要创建的用户名</param>
    /// <param name="password">该用户的密码字符串,明文传输即可</param>
    /// <exception cref="ArgumentException">
    /// <paramref name="userName"/> 或者 <paramref name="password"/> 是空字符串
    /// </exception>
    /// <exception cref="InvalidOperationException">
    /// <paramref name="userName"/> 不是唯一的
    /// </exception>
    /// <returns>刚创建的用户信息 或者 是<c>null</c></returns>
    /// <remarks>
    /// 为<c>null</c>的情况:
    /// <list type="bullet">
    /// <item>抛出了异常</item>
    /// <item>验证逻辑不正确,需要查看Log来确定</item>
    /// <item>...</item>
    /// </list>
    /// </remarks>
    public User? Create(string userName, string password)
    {
    }
}